/**********************************************************************************************************************
* COPYRIGHT 
* ------------------------------------------------------------------------------------------------------------------- 
* Copyright (c) iSOFT INFRASTRUCTURE SOFTWARE CO., LTD. This software is proprietary to 
* iSOFT INFRASTRUCTURE SOFTWARE CO., LTD., and all rights are reserved by iSOFT INFRASTRUCTURE SOFTWARE CO., LTD. 
* Without the express written permission of the company, no organization or individual may copy, install, trial, 
* distribute, or reverse engineer this software. For terms of use and further details, please refer to the End User 
* License Agreement (EULA) or contact us business@i-soft.com.cn for more assistance. 
* 
* This file contains code from EasyXMen, which is licensed under the LGPL-2.1. However, due to a special exception, 
* you are not required to comply with the provisions of section 6a of LGPL-2.1. Specifically, you may distribute 
* your software, including this file, under terms of your choice, including proprietary licenses, without needing to 
* provide the source code or object code as specified in section 6a. For more details, please refer to the project's 
* LICENSE and EXCEPTION files and the specific exception statement.  
* ------------------------------------------------------------------------------------------------------------------- 
* FILE DESCRIPTION 
* ------------------------------------------------------------------------------------------------------------------- 
*  @MCU                : S32K148 
*  @file               : Os_UserInf.c 
*  @license            : Evaliation 
*  @licenseExpiryDate  :  
*  @date               : 2024-10-21 10:37:16 
*  @customer           : EasyXMen User 
*  @toolVersion        : 2.0.18 
*********************************************************************************************************************/ 

/*=======[I N C L U D E S]====================================================*/
#include "Os.h"
#include "Arch_Extend.h"
#include "Arch_Processor.h"
/** DO NOT CHANGE THIS COMMENT!
 * <USERBLOCK User Includes>
 */
/* custom code.... */
#include "Gpt.h"
#include "Can_43_FLEXCAN.h"
#include "Mem_43_INFLS.h"
#include "MemAcc.h"
#include "EcuM.h"
#include "EcuM_Cbk.h"
#include "ComM.h"
#include "ComM_Gent.h"
#include "NvM.h"
#include "WdgM.h"
#include "Fee.h"
#include "Dem.h"
#include "MemIf_Types.h"
#include "SchM_Fee.h"
#include "SchM_MemAcc.h"
#include "SchM_CanSM.h"
#include "SchM_CanNm.h"
#include "SchM_NvM.h"
#include "SchM_Com.h"
#include "SchM_CanTp.h"
#include "SchM_Dcm.h"
#include "SchM_EcuM.h"
#include "SchM_BswM.h"
#include "SchM_Dem.h"
#include "SchM_WdgM.h"
#include "csm.h"
/** DO NOT CHANGE THIS COMMENT!
 * </USERBLOCK User Includes>
 */
/*=======[V E R S I O N   I N F O R M A T I O N]===============================*/
#define     OS_USERAPP_C_AR_MAJOR_VERSION              19U
#define     OS_USERAPP_C_AR_MINOR_VERSION              11U
#define     OS_USERAPP_C_AR_PATCH_VERSION              0U
#define     OS_USERAPP_C_SW_MAJOR_VERSION              2U
#define     OS_USERAPP_C_SW_MINOR_VERSION              0U
#define     OS_USERAPP_C_SW_PATCH_VERSION              0U

/*=======[V E R S I O N  C H E C K]===========================================*/
#if (OS_USERAPP_C_AR_MAJOR_VERSION != OS_CFG_H_AR_MAJOR_VERSION)
    #error "Os_Userapp.c:Mismatch in Specification Major Version"
#endif
#if (OS_USERAPP_C_AR_MINOR_VERSION != OS_CFG_H_AR_MINOR_VERSION)
    #error "Os_Userapp.c:Mismatch in Specification Minor Version"
#endif
#if (OS_USERAPP_C_AR_PATCH_VERSION != OS_CFG_H_AR_PATCH_VERSION)
    #error "Os_Userapp.c:Mismatch in Specification Patch Version"
#endif
#if (OS_USERAPP_C_SW_MAJOR_VERSION != OS_CFG_H_SW_MAJOR_VERSION)
    #error "Os_Userapp.c:Mismatch in Specification Major Version"
#endif
#if (OS_USERAPP_C_SW_MINOR_VERSION != OS_CFG_H_SW_MINOR_VERSION)
    #error "Os_Userapp.c:Mismatch in Specification Minor Version"
#endif

/*=======[T A S K S]==========================================*/
/* PRQA S 1532++ */ /* MISRA Rule 8.7 */

/*OsTask_Init: Core0(CPU0),Type = BASIC, Priority = 1*/
TASK(OsTask_Init)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK OsTask_Init >
    */
    /* custom code.... */
	uint32 NVM_USE_InitTIME = 0;
	uint32 INIT_READALL_TIMEOUT = 15000;
	NvM_RequestResultType InitNvMReadAllStatus = NVM_REQ_NOT_OK;

	EcuM_StartupTwo();

	Mem_43_INFLS_Init(NULL_PTR);
	MemAcc_Init(&MemAcc_Config);
	Fee_Init(NULL_PTR);
	NvM_Init(NULL_PTR);

	NvM_ReadAll();
	do
	{
		NVM_USE_InitTIME++;
		NvM_MainFunction();
		Fee_MainFunction();
		MemAcc_MainFunction();
		Mem_43_INFLS_MainFunction();
		NvM_GetErrorStatus(0,&InitNvMReadAllStatus);
		if(INIT_READALL_TIMEOUT < NVM_USE_InitTIME)
			break;
	}while(InitNvMReadAllStatus == NVM_REQ_PENDING);

	Dem_Init(&DemPbCfg);

    EcuM_SetWakeupEvent(EcuMWakeupSource_CAN);
    ComM_RequestComMode(0, COMM_FULL_COMMUNICATION);
    Crypto_Init(NULL_PTR);
    CryIf_Init(NULL_PTR);
    Csm_Init(NULL_PTR);
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK OsTask_Init >
    */
    if (E_OK != TerminateTask())
    {
        while (1)
        {
            /* dead loop */
        }
    }
}

/*OsTask_1ms: Core0(CPU0),Type = BASIC, Priority = 4*/
TASK(OsTask_1ms)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK OsTask_1ms >
    */
    /* custom code.... */
	CanSM_MainFunction();
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK OsTask_1ms >
    */
    if (E_OK != TerminateTask())
    {
        while (1)
        {
            /* dead loop */
        }
    }
}

/*OsTask_5ms: Core0(CPU0),Type = BASIC, Priority = 3*/
TASK(OsTask_5ms)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK OsTask_5ms >
    */
    /* custom code.... */
    CanNm_MainFunction();
    ComM_MainFunction_Channel_CanController_0();
    Com_MainFunctionRx();
    Com_MainFunctionTx();

    CanTp_MainFunction();
    Dcm_MainFunction();
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK OsTask_5ms >
    */
    if (E_OK != TerminateTask())
    {
        while (1)
        {
            /* dead loop */
        }
    }
}

/*OsTask_10ms: Core0(CPU0),Type = BASIC, Priority = 2*/
TASK(OsTask_10ms)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK OsTask_10ms >
    */
    /* custom code.... */
    EcuM_MainFunction();
    BswM_MainFunction();
    Dem_MainFunction();

    NvM_MainFunction();
    Fee_MainFunction();
	MemAcc_MainFunction();
	Mem_43_INFLS_MainFunction();
	Crypto_MainFunction();
	Csm_MainFunction();

    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK OsTask_10ms >
    */
    if (E_OK != TerminateTask())
    {
        while (1)
        {
            /* dead loop */
        }
    }
}

/*OsTask_100ms: Core0(CPU0),Type = BASIC, Priority = 1*/

uint8_t inputdata[] = { 0x7C,0x93,0xAA,0x2C,0xB2,0x89,0xD3,0x63,0x94,0x53,0xCE,0x12,0x40,0x8F,0x81,0x29,0x53,0x33,0x52,0x8D,0x04,0x81,0x16,0x3C,0x76,0xC9,0x2C,0x2E,0xD5,0xA2,0x8F,0x48,0x46,0xE6,0x3B,0xC4,0x6A,0x17,0xAD,0x1F,0x89,0x4D,0x48,0xF7,0x1A,0xDD,0x66,0x1C,0x00,0x52,0x9B,0x96,0x1C,0x6D,0x86,0xE7,0xB4,0xB0,0xE6,0x02,0x46,0xF0,0xD8,0x14,0x10,0x07,0x62,0xAC,0xA1,0x5F,0x89,0xC7,0x81,0x26,0xC5,0x4A,0xC7,0xCB,0xF7,0x42,0x39,0x1B,0x65,0xC7,0x0C,0x9D,0x82,0x7E,0xB9,0x9C,0x33,0xAE,0x14,0xF6,0xD2,0x66,0x0A,0x80,0xD3,0xCD,0xB3,0x72,0xD1,0x42,0xD4,0xC9,0xFD,0x15,0x8D,0x77,0x22,0xF8,0x1C,0x74,0x41,0x21,0x3A,0xF3,0x15,0x9C,0x53,0x41,0x7D,0x10,0x69,0x2F,0xD6,0x04,0x3A,0x79,0x2C,0xA6,0x6C,0xBD,0x01,0x4A,0xE0,0xCE,0xC7,0x69,0x18,0xF7,0x74,0xF4,0xEB,0xA7,0x50,0xD6,0x8F,0x88,0xD5,0x41,0x3D,0x54,0xAE,0x08,0xC9,0xB1,0xA8,0xF7,0xD7,0xA6,0x1B,0x9C,0x59,0xE1,0x63,0xA1,0x4D,0x9B,0xF9,0x9F,0x47,0x20,0x13,0xC2,0xE6,0xE2,0xE7,0x6F,0xD8,0x85,0xB6,0x82,0xB1,0x35,0xD9,0x0F,0x2F,0x49,0x45,0xE9,0x94,0x89,0xAA,0x80,0x7F,0xDD,0x8D,0x24,0x74,0x5B,0x26,0x23,0xC2,0x53,0xBF,0x55,0xC3,0xDE,0x6A,0x91,0xA6,0x12,0xA5,0x97,0x90,0x90,0xEF,0x7D,0x80,0x4D,0x04,0x51,0xEA,0x5A,0x2B,0x1F,0x23,0xA3,0xE9,0x72,0x04,0x24,0x6F,0xB3,0xFE,0xFE,0xCB,0xF1,0xBC,0xEF,0xA4,0x2F,0x44,0x7D,0xA2,0x63,0x28,0x9C,0x84,0x85,0x6A,0x3E,0xD5,0xDC,0xBE,0xBB,0xEA,0x1C,0x9F,0xF9,0x86,0xC0,0xB4,0x45,0x08,0xEB,0x8B,0x04,0x30,0x9F,0x72,0x28,0xA8,0xBE,0x63,0xD3,0x21,0x2D,0xAA,0x17,0xC7,0xE8,0xE2,0xEE,0x76,0x44,0xC5,0xF3,0x1B,0x7A,0xCD,0x7A,0xF4,0xE9,0x8C,0x03,0xBA,0xB7,0x54,0xB7,0xCC,0x74,0x26,0x41,0xBB,0xA7,0x3E,0x39,0x7D,0x3B,0x82,0x8B,0x1C,0xA2,0x0C,0x74,0x97,0x27,0xBD,0x3B,0xDC,0x45,0xAC,0xEE,0xC1,0x8B,0x82,0xD4,0x76,0xAA,0x27,0xED,0x36,0xA6,0x12,0x95,0xAD,0x91,0x4E,0x0A,0x69,0xED,0x24,0x72,0x6F,0xDF,0x2D,0xF6,0x3A,0x1D,0x7E,0xA8,0x99,0x75,0x58,0xCA,0x9D,0xD9,0xC4,0x4E,0x15,0xF1,0xF4,0x0B,0x50,0x61,0xA2,0x9F,0xA7,0xE4,0x3B,0xD8,0x7F,0x47,0x06,0x9D,0x42,0x06,0x75,0xC8,0x4B,0x8C,0xA5,0x03,0x7C,0x20,0xBA,0x17,0x59,0xCC,0x3F,0x82,0x24,0x39,0x2B,0x3B,0xF5,0x86,0xBB,0x42,0x9A,0x38,0x83,0x0C,0xB8,0x19,0x15,0x50,0x31,0x2A,0xDB,0xBF,0x12,0xB1,0x8F,0x53,0x7D,0x3F,0xC5,0xF4,0x0E,0xF6,0xF4,0xD7,0x2A,0x2F,0x42,0x45,0xAE,0x3F,0x30,0xF2,0x65,0x4E,0xB4,0xC5,0xC6,0x8F,0x52,0x76,0x12,0xD9,0x76,0xD9,0x01,0xB7,0xBD,0x8A,0xEB,0x5E,0x8E,0x90,0x71,0xB9,0x1C,0x22,0xA3,0x03,0x95,0x31,0xA3,0xBC,0xE0,0xFF,0x1D,0x8D,0xF5,0x55,0x42,0xAF,0x9D,0x2D,0x14,0x75,0x52,0xE5,0x77,0x1C,0x38,0x79,0xE4,0x40,0x7B,0x0E,0x86,0xFD,0x30,0x12,0xBD,0xFA,0x72,0x5E,0x3B,0xDD,0x42,0x33,0xF8,0xEA,0x2A,0x91,0x4D,0x00,0x06,0xDC,0x93,0xD8,0x32,0xDE,0x11,0xC7,0x06,0x0E,0xB2,0xD9,0xF9,0x0C,0xAE,0x50,0x26,0x72,0xEF,0x8E,0xAC,0x2A,0x31,0xBD,0x3B,0x35,0x94,0x23,0x0C,0xAA,0x92,0xDB,0x6D,0x00,0x66,0xFF,0xA6,0xC2,0xA8,0xE2,0x0E,0xF5,0x6E,0x26,0x95,0xEE,0x5B,0xC0,0x17,0xD1,0x8A,0x4F,0x00,0xA6,0x8F,0x4C,0x26,0x0B,0xD6,0x72,0xE2,0xC5,0xB8,0xDF,0x4C,0xBB,0x70,0xC6,0x4A,0x5E,0x03,0x03,0x2E,0x50,0xAB,0x9E,0x99,0x7A,0x0F,0x1F,0xB0,0xC4,0x98,0x32,0x8E,0xA6,0xE7,0x85,0x6A,0x3F,0xFB,0xBA,0x5F,0x46,0x77,0x45,0xDB,0xE1,0x46,0x0E,0xA7,0x85,0xC6,0x1B,0x4B,0x07,0xFE,0x39,0xE6,0x61,0xA5,0xB8,0xF6,0x2C,0x14,0x5E,0x53,0x4E,0xFF,0x7D,0x06,0xCC,0x34,0x3A,0x6D,0x49,0xDF,0x0C,0xB2,0x05,0x7D,0x41,0x89,0x7C,0x02,0x4A,0x1F,0xBC,0xA4,0x85,0x75,0x53,0xED,0x49,0x8D,0xEA,0xCF,0x19,0x23,0xF0,0xA2,0xA8,0x15,0x5F,0xAB,0x0A,0xC5,0xCB,0x2C,0x78,0x37,0x17,0x0E,0x08,0x71,0xDF,0x48,0x95,0xC1,0xD0,0x03,0x2D,0xF7,0x88,0x1F,0x0C,0x5F,0x2B,0xD4,0x93,0x22,0x3F,0x73,0xBA,0x21,0x46,0x5F,0xE3,0x43,0x44,0xFF,0x70,0x5C,0x88,0xF5,0xA7,0xCE,0x9D,0x99,0x7E,0x21,0xCD,0x36,0x5D,0x21,0xBB,0x59,0xF5,0xB6,0xB8,0xA8,0x9C,0x49,0xEE,0x7A,0x8C,0x68,0xA9,0x3F,0x43,0xCD,0xC6,0x9C,0xF7,0xA9,0xBC,0x61,0xEB,0x32,0x25,0x64,0x8E,0x5B,0x4D,0x90,0xAB,0x13,0x6D,0x82,0x59,0xD3,0xB0,0x60,0x6F,0xC0,0xB4,0x8F,0x6A,0xCC,0x0F,0xE2,0x32,0x32,0x3F,0x21,0xD1,0x37,0xE8,0xC9,0x06,0xBE,0x5F,0xDC,0xC7,0x34,0x01,0xC2,0x23,0x4C,0xC4,0x95,0x5E,0xD9,0xEA,0x3D,0x19,0x06,0x60,0x5D,0xAC,0x78,0x8E,0xFF,0x8A,0x86,0x49,0xE8,0xCE,0x0B,0x88,0x7E,0x58,0x16,0x4D,0xB6,0xFF,0x5C,0x23,0xA9,0x51,0x77,0xE6,0x2D,0x50,0x4D,0x6C,0x15,0x8A,0x3F,0x39,0xF4,0x05,0x87,0xA3,0x17,0xFD,0xD6,0x3E,0x1D,0xC6,0x98,0x22,0x2C,0xA1,0xCF,0x59,0x01,0xB9,0xF8,0xBF,0xE2,0xE5,0xB3,0x73,0xDD,0x2E,0xBC,0xCC,0xA7,0xFD,0x8C,0x1D,0x58,0xB9,0xDF,0x5B,0x7D,0xBE,0xC2,0x50,0x09,0x81,0x44,0xDC,0xC7,0x59,0x56,0x3F,0xCA,0x64,0x67,0x4D,0x75,0xA6,0x52,0x4F,0x6F,0x7E,0x8D,0xAD,0x58,0x70,0x95,0x3C,0x6D,0xD1,0x1E,0x0F,0xD7,0x36,0x80,0xC8,0x37,0x90,0x8F,0xF0,0x7A,0x95,0xD8,0x91,0xC1,0x51,0xD8,0xF4,0xF5,0xC8,0x4C,0x26,0xEC,0xD6,0x72,0xD2,0xE5,0xB3,0x90,0xE3,0x35,0xCB,0xF2,0x58,0x55,0xC2,0x3B,0x15,0xBC,0x34,0x48,0xBD,0x91,0x6E,0xF2,0x15,0x28,0xA4,0x57,0xC3,0x79,0x5F,0x98,0x5A,0xF1,0x86,0x76,0x85,0x09,0x65,0x04,0xC8,0x7B,0x60,0xE7,0x57,0x4E,0x04,0xA6,0xE0,0xE5,0x46,0x58,0x8F,0x47,0x1E,0x3B,0x77,0xB2,0xD4,0x69,0x00,0x30,0x29,0x8D,0x67,0xFD,0xEA,0x7C,0x52,0xCE,0x2F,0xEC,0x54,0xAE,0xFB,0x4F,0xFB,0x59,0x81,0xAB,0x44,0xCC,0xD1,0x96,0xC2,0xE0,0x19,0x20,0x53,0xFC,0x6A,0x01,0xEB,0x37,0x2E,0x61,0xFB,0xA5,0xEA,0xE2,0x6A,0x4F,0x2E,0x32,0xD2,0x95,0xDA,0xDF,0x18,0x9F,0xED,0xD1,0x4A,0x1F,0x03,0xC5,0x68,0xB3,0xD1,0x2C,0x09,0xE9,0x27};
uint32_t buf_length = sizeof(inputdata);
uint8_t encrypt_in[64] = {0x96,0x63,0x97,0xa2,0x23,0xd8,0x52,0x1d,0xee,0xc7,0xa9,0xc2,0x56,0xba,0x70,0xb5,0x3e,0x31,0x3f,0xb0,0x56,0xe9,0x62,0xa3,0x57,0x38,0x56,0x1e,0xb5,0xb8,0xf4,0xcc,0x32,0x2c,0x24,0x33,0xc9,0xdd,0xbc,0xc1,0xb3,0xd1,0x3a,0x44,0xa9,0x79,0x80,0x8d,0xb5,0xaf,0xc6,0xb4,0x3b,0xf4,0x3e,0x90,0xfc,0xa3,0xce,0x9f,0x29,0x4f,0xce,0x82};
// SM2˽Կ
uint8_t Private_Key[32] = {0x59,0xA4,0x08,0xB5,0xED,0x69,0xE2,0xEB,0xE8,0xDC,0x3D,0xD4,0x62,0x14,0x53,0xDA,0x8B,0x0D,0xEB,0xF2,0x94,0x19,0x0A,0xCD,0x9C,0xDB,0x45,0x2E,0x90,0xB7,0x76,0x3D,};

uint8_t Publickey[64] = {0x2E,0xB5,0x01,0x93,0x34,0xA2,0x1A,0xE6,0x18,0x57,0x00,0x09,0x49,0x1C,0x50,0xB3,0xC1,0x7D,0x6E,0x6B,0x6B,0x9C,0xDE,0xAF,0x7E,0x92,0x4B,0x50,0x04,0x85,0x22,0x52,0xCE,0x93,0xDF,0x59,0xCF,0xB6,0x07,0xB4,0xED,0x46,0xA6,0x54,0x34,0x1F,0x46,0x36,0xC1,0x23,0x33,0xC3,0xFA,0x13,0xE2,0x8F,0x5B,0x74,0x04,0xA3,0x0C,0x0A,0xFA,0x84};
uint8_t Sig_Result[72];
uint32_t siglen;
uint8_t verify_result;
uint8_t encrypt_out[256];
uint8_t decrypt_out[256];
uint32 decryptlen;
TASK(OsTask_100ms)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK OsTask_100ms >
    */
    /* custom code.... */
    Std_ReturnType  ret;
	//WdgM_CheckpointReached(WdgMSupervisedEntity_0, SE0_WdgMCheckpoint_0);
	//WdgM_MainFunction();

    Csm_KeyElementSet(0,0,Private_Key,32);
    Csm_KeyElementSet(1,1,Publickey,64);
    Csm_KeySetValid(0);
    Csm_KeySetValid(1);
    ret = Csm_SignatureGenerate(CsmJob_0, CRYPTO_OPERATIONMODE_SINGLECALL, inputdata, buf_length, Sig_Result, &siglen);
    
    //sign_result_lenth = 71;
    if(ret == E_OK)
    {
    	ret = Csm_SignatureVerify(CsmJob_1, CRYPTO_OPERATIONMODE_SINGLECALL, inputdata, buf_length, Sig_Result, siglen, &verify_result);
    }
    if(ret == E_OK)
    {
    	Sig_Result[15] +=1;
    	Sig_Result[20] +=1;
    	ret = Csm_SignatureVerify(CsmJob_1, CRYPTO_OPERATIONMODE_SINGLECALL, inputdata, buf_length, Sig_Result, siglen, &verify_result);
    }

    ret = Csm_Encrypt(CsmJob_2,CRYPTO_OPERATIONMODE_SINGLECALL,encrypt_in,64,encrypt_out,&decryptlen);
    if (ret == E_OK)
    {
        ret = Csm_Decrypt(CsmJob_3,CRYPTO_OPERATIONMODE_SINGLECALL,encrypt_out,decryptlen,decrypt_out,&decryptlen);
        for (uint8_t i = 0; i < 64; i++)
        {
            if(encrypt_in[i] != decrypt_out[i]){
                while (1);
                
            }
        }
        
    }
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK OsTask_100ms >
    */
    if (E_OK != TerminateTask())
    {
        while (1)
        {
            /* dead loop */
        }
    }
}

/*=======[H O O K S]================================================*/
FUNC(void, OS_APPL_CODE) IdleHook_Core0(void)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK IdleHook_Core0>
    */
    /* custom code.... */
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK IdleHook_Core0>
    */
}

/*=======[ALARM CALL BACK]==========================================*/

FUNC(void, OS_APPL_CODE) ErrorHook(StatusType Error)
{
    /***The code below is just for deleting the complier warning.***
    ***Please remove it and use your own code****/
    (void)Error;
    /***The code above is just for deleting the complier warning*/
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK ErrorHook>
    */
    /* custom code.... */
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK ErrorHook>
    */
}

FUNC(void, OS_APPL_CODE) StartupHook(void)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK StartupHook>
    */
    /* custom code.... */
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK StartupHook>
    */
}

FUNC(void, OS_APPL_CODE) ShutdownHook(StatusType Error)
{
    /***The code below is just for deleting the complier warning.***
    ***Please remove it and use your own code****/
    (void)Error;
    /***The code above is just for deleting the complier warning*/
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK ShutdownHook>
    */
    /* custom code.... */
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK ShutdownHook>
    */
}

/*=======[P A N I C H A N D L E R]================================*/
FUNC(void, OS_CODE) Arch_PanicHandler(void)
{
    /* please insert your code here ... */
}

/*=======[I S R S]================================================*/
/*
 *ISR(CAN0_ORed: Core0(CPU0))
 */
ISR(CAN0_ORed)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK CAN0_ORed>
    */
    /* custom code.... */
	extern void CAN0_ORED_IRQHandler();
	CAN0_ORED_IRQHandler();
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK CAN0_ORed>
    */
}

/*
 *ISR(CAN0_ORed_0_15_MB: Core0(CPU0))
 */
ISR(CAN0_ORed_0_15_MB)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK CAN0_ORed_0_15_MB>
    */
    /* custom code.... */
	extern void CAN0_ORED_0_15_MB_IRQHandler();
	CAN0_ORED_0_15_MB_IRQHandler();
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK CAN0_ORed_0_15_MB>
    */
}

/*
 *ISR(CAN0_ORed_16_31_MB: Core0(CPU0))
 */
ISR(CAN0_ORed_16_31_MB)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK CAN0_ORed_16_31_MB>
    */
    /* custom code.... */
	extern void CAN0_ORED_16_31_MB_IRQHandler();
	CAN0_ORED_16_31_MB_IRQHandler();
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK CAN0_ORed_16_31_MB>
    */
}

/*
 *ISR(FTM0_Ch0_Ch1: Core0(CPU0))
 */
ISR(FTM0_Ch0_Ch1)
{
    /* please insert your code here ... */
    /** DO NOT CHANGE THIS COMMENT!
    * <USERBLOCK FTM0_Ch0_Ch1>
    */
    /* custom code.... */
	extern void FTM_0_CH_0_CH_1_ISR();
	FTM_0_CH_0_CH_1_ISR();
    /** DO NOT CHANGE THIS COMMENT!
    * </USERBLOCK FTM0_Ch0_Ch1>
    */
}

/* PRQA S 1532-- */ /* MISRA Rule 8.7 */
/*=======[E N D   O F   F I L E]==============================================*/

